difference between 251968-01 (41cbm-c---01) and 251968-02 (41cbm-c---02.txt)

----------------------------------------------------------------------------

.:C001 46                    checksum-correction? 

----------------------------------------------------------------------------

                             format /new 
                             41-II: $C04E 
                  from $FCAE 
.> C002 AD 0C 1C  LDA $1C0C
.> C005 29 1F     AND #$1F
.> C007 09 C0     ORA #$C0
.> C009 8D 0C 1C  STA $1C0C
.> C00C A9 FF     LDA #$FF
.> C00E 8D 03 1C  STA $1C03
.> C011 A9 55     LDA #$55
.> C013 8D 01 1C  STA $1C01
.> C016 A2 03     LDX #$03    3 * 256 = 768 (instead of 10240) bytes
.> C018 A0 00     LDY #$00
.> C01A 50 FE     BVC $C01A
.> C01C B8        CLV 
.> C01D 88        DEY 
.> C01E D0 FA     BNE $C01A
.> C020 CA        DEX 
.> C021 D0 F7     BNE $C01A
.> C023 60        RTS 

----------------------------------------------------------------------------

                             B-W-command
                             41-II: $C070
                             41-C : JMP $D3DE ??? probably wrong?
                             41-II: JMP $D3EE ??? probably right?
                  from $CD91
.> C024 A4 82     LDY $82
.> C026 4C DE D3  JMP $D3DE  probably wrong? differnce at 41-C and 41-II ???

----------------------------------------------------------------------------

                              set parameters for opening a channel
                              41-II: $C075
                  from $DCD6    
.> C029 95 B5     STA $B5,X
.> C02B 95 BB     STA $BB,X
.> C02D A9 00     LDA #$00
.> C02F 9D 44 02  STA $0244,X  
.> C032 60        RTS 

----------------------------------------------------------------------------

                              compute hexdec to ASCII
                              41-II: $C07F
                  from $E69B
.> C033 08        PHP 
.> C034 78        SEI 
.> C035 A9 00     LDA #$00
.> C037 F8        SED 
.> C038 E0 00     CPX #$00
.> C03A F0 07     BEQ $C043
.> C03C 18        CLC 
.> C03D 69 01     ADC #$01
.> C03F CA        DEX 
.> C040 4C 38 C0  JMP $C038
.> C043 28        PLP 
.> C044 4C AA E6  JMP $E6AA

----------------------------------------------------------------------------

                             disk full warning
                             41-II: $C093
                  from $EFC5
.> C047 C9 03     CMP #$03
.> C049 B0 05     BCS $C050
.> C04B A9 72     LDA #$72
.> C04D 20 C7 E6  JSR $E6C7
.> C050 A9 01     LDA #$01
.> C052 60        RTS 

----------------------------------------------------------------------------

                  from $F342
                              41-II: not patched
.:C053 29 1F 19 12            track where there is a bitrate-change

----------------------------------------------------------------------------

.:C057 43 4F 50 59 52 49 47 48 54 20 28 43 29 31 39 38 COPYRIGHT (C)198
.:C067 35 20 43 4F 4D 4D 4F 44 4F 52 45 20 45 4C 45 43 5 COMMODORE ELEC
.:C077 54 52 4F 4E 49 43 53 2C 20 4C 54 44 2E 0D 41 4C TRONICS, LTD..AL
.:C087 4C 20 52 49 47 48 54 53 20 52 45 53 45 52 56 45 L RIGHTS RESERVE
.:C097 44 0D                                           D.

----------------------------------------------------------------------------

                             FF,X -> 00FF,X
.> C1B3 4C B8 FF  JMP $FFB8
.> C1B6 EA        NOP 

----------------------------------------------------------------------------

                             FF,X -> 00FF,X
.> C661 4C C0 FF  JMP $FFC0

----------------------------------------------------------------------------

                             FF,X -> 00FF,X
.> C66B 4C AC FF  JMP $FFAC

----------------------------------------------------------------------------
                             B-W-command
.> CD91 20 24 C0  JSR $C024

----------------------------------------------------------------------------

                             FF,X -> 00FF,X
.> D071 4C C7 FF  JMP $FFC7
.> D074 EA        NOP 

----------------------------------------------------------------------------

                             steal inactive buffer
.> D367 4C 91 FF  JMP $FF91
.> D36A EA        NOP 

----------------------------------------------------------------------------

                             position head a halftrack
.> D610 20 84 FF  JSR $FF84

----------------------------------------------------------------------------

                             reposition head on fulltrack
.> D628 20 89 FF  JSR $FF89

----------------------------------------------------------------------------

                             set parameters for opening a channel
                             prevent writing #$02 to $0197
.> DCB6 A6 82     LDX $82
.> DCB8 B5 A7     LDA $A7,X
.> DCBA 0A        ASL 
.> DCBB 30 06     BMI $DCC3
.> DCBD A8        TAY 
.> DCBE A9 02     LDA #$02
.> DCC0 99 99 00  STA $0099,Y
.> DCC3 B5 AE     LDA $AE,X
.> DCC5 09 80     ORA #$80
.> DCC7 95 AE     STA $AE,X
.> DCC9 0A        ASL 
.> DCCA 30 06     BMI $DCD2
.> DCCC A8        TAY 
.> DCCD A9 02     LDA #$02
.> DCCF 99 99 00  STA $0099,Y
.> DCD2 A9 00     LDA #$00
.> DCD4 95 B5     STA $B5,X
.> DCD6 4C 29 C0  JMP $C029
.> DCD9 EA        NOP 

----------------------------------------------------------------------------

                             compute hexdec to ASCII
.> E69C 4C 33 C0  JMP $C033

----------------------------------------------------------------------------

                             autoboot-routine
                             41-II: NOP ... RTS
.> E780 4C 59 EA  JMP $EA59

----------------------------------------------------------------------------

                             test ATN-mode
.> EA68 4C A6 FF  JMP $FFA6

----------------------------------------------------------------------------

                             begin of reset-routine
.> EB22 4C 9F FF  JMP $FF9F

----------------------------------------------------------------------------

                             middle of reset-routine
.> EBC2 20 73 FF  JSR $FF73  initialize disk-controller

----------------------------------------------------------------------------

                             main-waitingloop
.> EC04 4C A6 FF  JMP $FFA6

----------------------------------------------------------------------------

                             format/new
.> EE1D 20 7F FF  JSR $FF7F

----------------------------------------------------------------------------
                    
                             allocate block in BAM
.> EFC5 4C 47 C0  JMP $C047  disk full warning
.> EFC8 EA        NOP 

----------------------------------------------------------------------------
 
                             FF,X -> 00FF,X
.> F017 4C B0 FF  JMP $FFB0
.> F01A EA        NOP 

----------------------------------------------------------------------------

                             initialize disk-controller
.> F279 A9 3A     LDA #$3A   interrupt-rate: 15ms (instead of 8ms)
.> F27B 8D 07 1C  STA $1C07
.> F27E 8D 05 1C  STA $1C05

----------------------------------------------------------------------------
 
                               compute sectors per track and bitrate
                               compute correct values for track 36 - 40
.> F33C A2 04     LDX #$04
.> F33E B1 32     LDA ($32),Y
.> F340 85 40     STA $40
.> F342 DD 52 C0  CMP $C052,X  correct table for track 36 - 40
.> F345 CA        DEX 
.> F346 B0 FA     BCS $F342
.> F348 BD D1 FE  LDA $FED1,X
.> F34B 85 43     STA $43
.> F34D 8A        TXA 
.> F34E 0A        ASL 
.> F34F 0A        ASL 
.> F350 0A        ASL 
.> F351 0A        ASL 
.> F352 0A        ASL 
.> F353 85 44     STA $44
.> F355 AD 00 1C  LDA $1C00
.> F358 29 9F     AND #$9F
.> F35A 05 44     ORA $44
.> F35C 8D 00 1C  STA $1C00

----------------------------------------------------------------------------

                             stepper motor routines in IRQ
.> FA2E A5 4A     LDA $4A    amount of steps
.> FA30 10 31     BPL $FA63  b.i.movement inwards

                             = movement outwards
.> FA32 4C 36 FF  JMP $FF36  jump to light barrier patch

----------------------------------------------------------------------------
                    
                              format / new
.> FC27 E0 02     CPX #$02    amount of bytes at computing tracklength

----------------------------------------------------------------------------
                             
                              format / new
                              write less bytes
.> FCAE 20 02 C0  JSR $C002   clear track

----------------------------------------------------------------------------
                         
                              stepper motor routines in IRQ
                  from $FA32  
.> FF36 8A        TXA 
.> FF37 48        PHA 
.> FF38 98        TYA 
.> FF39 48        PHA 

.> FF3A A2 01     LDX #$01
.> FF3C A0 64     LDY #$64
.> FF3E AD 0F 18  LDA $180F
.> FF41 CD 0F 18  CMP $180F
.> FF44 D0 20     BNE $FF66
.> FF46 88        DEY 
.> FF47 D0 F5     BNE $FF3E
.> FF49 CA        DEX 
.> FF4A D0 F0     BNE $FF3C
.> FF4C 29 01     AND #$01
.> FF4E F0 16     BEQ $FF66

.> FF50 AD 00 1C  LDA $1C00
.> FF53 29 03     AND #$03
.> FF55 D0 0F     BNE $FF66
                           
                              = head at odd track (at track 1)
.> FF57 A5 7B     LDA $7B     flag for deposition head
.> FF59 D0 0B     BNE $FF66   b.i.deposition head wanted -> execute move
                              if head is already at track 1, but deposition
                              outwards is wanted, then execute move
                              !!! $7B isn't used usually !!!
                              using $7B could cause problems with 
                              user-software???        
.> FF5B 68        PLA 
.> FF5C A8        TAY 
.> FF5D 68        PLA 
.> FF5E AA        TAX 
.> FF5F A9 00     LDA #$00
.> FF61 85 4A     STA $4A
.> FF63 4C BE FA  JMP $FABE

.> FF66 68        PLA 
.> FF67 A8        TAY 
.> FF68 68        PLA 
.> FF69 AA        TAX 
.> FF6A E6 4A     INC $4A
.> FF6C AE 00 1C  LDX $1C00
.> FF6F CA        DEX 
.> FF70 4C 38 FA  JMP $FA38
      
It's bad to use $7B, because a user-program could use $7B, so it would crash
Instead of using $7B this could be perhaps used:
Routine where headdepositioning is made:
   D610           JSR $D676    depostion head 1 halftrack
   D68A           JSR $D693    deposition head 1 halftrack outwards
   D69A           CMP $02FE,Y  wait until IRQ-routine
   D69D           BEQ $D69A     moved head
   FA32           JMP $FF36    IRQ: Move head 1 halftrack outwards
   FF36                        this routine
   FF57                        substitute without using $7B             

Moving the head farer outwards than track 1 (= move to track 0.5) is only
allowed at head-depositioning. One must find out whether IRQ-move 1 halftrack
outwards is from deposition or not

   stack:
                  010D,X       #$D6  address of D610 JSR $D676 high 
                  010C,X       #$12  address of D610 JSR $D676 low  
                  010B,X       #$D6  address of D68A JSR $D693 high 
                  010A,X       #$8C  address of D68A JSR $D693 low  
                  0109,X       #$FF  accu (D693)
                  0108,X       #$D6  address of mainprogram where IRQ was, high $D69A-D69D
                  0107,X       #$9D 9A  address of mainprogram where IRQ was, low  $D69A-D69D
                  0106,X             status-register $D69A-D69D
                  0105,X             accu (FE67)
                  0104,X             X-register (FE69)
                  0103,X             Y-register (FE6B)
                  0102,X       #$FE  $FE7C-highbyte JSR $F2B0
                  0101,X       #$7E  $FE7C-lowbyte JSR $F2B0
                  0100,X             free byte of stack
                               (JSR: address at stack = address of next command -1)
                               (IRQ: address at stack = address of actual command)
  
   D69A           CMP $02FE,Y  at a test with VICE: The IRQ-address was always #$9D
   D69D           BEQ $D69A    it was never #$9A
                               I don't know why the IRQ never interrupts at 
                                executing of command $D69A                                           
                               
   FF57           TSX          stackpointer to X          
   FF58           LDA $0107,X 
   FF5B           CMP #$9D     lowbyte of $D69D
   FF5D           BEQ $FF63    b.i.IRQ is made at $D69D
   FF5F           CMP #$9A     lowbyte of $D69A        
   FF61           BNE $FF8C    b.i.IRQ is not made at $D69A
   FF63           LDA $0108,X
   FF66           CMP #$D6     highbyte of $D69A-$D69D
   FF68           BNE $FF8C    b.i.IRQ is not made at $D69A-$D69D
   FF6A           LDA $0109,X  accu at $D693
   FF6D           CMP #$FF
   FF6F           BNE $FF8C    b.i.not outwards
   FF71           LDA $010A,X
   FF74           CMP #$8C     lowbyte $D68A JSR $D693    
   FF76           BNE $FF8C    b.i.not $D68A JSR $D693 
   FF78           LDA $010B,X
   FF7B           CMP #$D6     highbyte $D68A JSR $D693  
   FF7D           BNE $FF8C    b.i.not $D68A JSR $D693  
   FF7F           LDA $010C,X
   FF81           CMP #$8C     lowbyte $D68A JSR $D693    
   FF83           BNE $FF8C    b.i.not $D68A JSR $D693 
   FF85           LDA $010D,X
   FF88           CMP #$D6     highbyte $D68A JSR $D693  
   FF8A           BEQ $FF97    b.i.$D68A JSR $D693  
                               now it's 99.999% sure that a head-deposition
                               is wanted => execute move 1 halftrack
                               outwards to track 0.5
                               memory $7B isn't needed
 
  FF8C         = FF5B         don't execute bump
  
  FF97         = FF66         execute bump

  EAA2            LDX #$FE    make lightbarrier-parallelport to output 
                              important for $FF3E-$FF41
                              Bit0 is needed for light barrier => parallel-
                              cable cannot be used (bit0 must be input)
----------------------------------------------------------------------------

                              (reset-routine: execute bump at reset)
                  from $EBC2 
.> FF73 20 59 F2  JSR $F259
.> FF76 A9 01     LDA #$01
.> FF78 85 06     STA $06
.> FF7A A9 C0     LDA #$C0
.> FF7C 85 00     STA $00
.> FF7E 60        RTS 
      
----------------------------------------------------------------------------

                              (format/new)
                              41-II: $FF36
                  from $EE1D  
.> FF7F 85 FF     STA $FF
.> FF81 4C 00 C1  JMP $C100
      
----------------------------------------------------------------------------

                              position head a halftrack
                  from $D610  
.> FF84 85 7B     STA $7B     #$00 = no deposition
                              #$01 = deposition 1 halftrack inwards
                              #$ff = deposition 1 halftrack outwards 
.> FF86 4C 76 D6  JMP $D676
      
----------------------------------------------------------------------------

                              reposition head on fulltrack
                  from $D628  
.> FF89 20 76 D6  JSR $D676
.> FF8C A9 00     LDA #$00
.> FF8E 85 7B     STA $7B     clear $7b
.> FF90 60        RTS 
      
----------------------------------------------------------------------------

                              steal inactive buffer
                              41-II: $FF3B
                  from $D367  
.> FF91 C9 02     CMP #$02
.> FF93 90 07     BCC $FF9C
.> FF95 C9 0F     CMP #$0F
.> FF97 F0 03     BEQ $FF9C
.> FF99 4C 6B D3  JMP $D36B
.> FF9C 4C 73 D3  JMP $D373
      
----------------------------------------------------------------------------

                              begin of reset-routine
                              41-II: $FF49
                  from $EB22  
.> FF9F 78        SEI 
.> FFA0 A2 45     LDX #$45
.> FFA2 9A        TXS 
.> FFA3 4C 25 EB  JMP $EB25
      
----------------------------------------------------------------------------

                              41-II: $FF50
                  from $EA68  test ATN-mode
                  from $EC04  main-waitingloop
.> FFA6 2C 01 18  BIT $1801   clear IRQ-flag
.> FFA9 4C 5B E8  JMP $E85B
      
----------------------------------------------------------------------------

                              41-II: $FF56
                  from $C66B
.> FFAC BD FF 00  LDA $00FF,X
.> FFAF 60        RTS 
      
----------------------------------------------------------------------------

                              41-II: $FF5A
                  from $F017
.> FFB0 A6 7F     LDX $7F
.> FFB2 BD FF 00  LDA $00FF,X
.> FFB5 4C 1B F0  JMP $F01B
      
----------------------------------------------------------------------------

                              41-II: $FF62
                  from $C1B3
.> FFB8 A9 00     LDA #$00
.> FFBA 9D FF 00  STA $00FF,X
.> FFBD 4C B7 C1  JMP $C1B7
      
----------------------------------------------------------------------------

                              41-II: $FF6A
                  from $C661
.> FFC0 98        TYA 
.> FFC1 9D FF 00  STA $00FF,X
.> FFC4 4C 64 C6  JMP $C664
      
----------------------------------------------------------------------------

                              41-II: $FF71
                  from $D071
.> FFC7 95 1C     STA $1C,X
.> FFC9 9D FF 00  STA $00FF,X
.> FFCC 4C 75 D0  JMP $D075
      
----------------------------------------------------------------------------

.:FFE5 CA         checksum-correction???
      
----------------------------------------------------------------------------
